/*
 *  vector_test.cc
 *  Untitled
 *
 *  Created by Ben Nolan on 2/11/08.
 *  Copyright 2008 __MyCompanyName__. All rights reserved.
 *
 */

#include "vector.h"
#include "errors.h"
#include <iostream>

#include <boost/test/unit_test.hpp>
#include <boost/test/floating_point_comparison.hpp>

namespace W = Wonderland;

BOOST_AUTO_TEST_CASE(Vector_Comparison){
	W::Vector v(5,5,5);
	
	BOOST_CHECK(v < W::Vector(10,10,10));
	BOOST_CHECK(v > W::Vector(-10,-10,-10));
};


BOOST_AUTO_TEST_CASE(Vector_New){
	W::Vector v(1,2,3);
	
	BOOST_CHECK_EQUAL(v.x, 1);
	BOOST_CHECK_EQUAL(v.y, 2);
	BOOST_CHECK_EQUAL(v.z, 3);
};

BOOST_AUTO_TEST_CASE(Vector_NewFromString){
	W::Vector v("-1234,100,78.3332");

	BOOST_CHECK_CLOSE(v.x, -1234.0, 1e-6);
	BOOST_CHECK_CLOSE(v.y, 100.0, 1e-6);
	BOOST_CHECK_CLOSE(v.z, 78.3332, 1e-6);

	BOOST_CHECK_THROW(
		W::Vector v2("34f90n34f90n3490"),
		Wonderland::Errors::BadSerialization
	);
}

BOOST_AUTO_TEST_CASE(Vector_toString){
	W::Vector v("-1234,100,78.3332");
	
	BOOST_CHECK_EQUAL("-1234,100,78.3332", v.toString());
}

	

//	BOOST_CHECK(
//	);
//    // seven ways to detect and report the same error:
//    BOOST_CHECK( add( 2,2 ) == 4 );        // #1 continues on error
//
//    BOOST_REQUIRE( add( 2,2 ) == 4 );      // #2 throws on error
//
//    if( add( 2,2 ) != 4 )
//      BOOST_ERROR( "Ouch..." );            // #3 continues on error
//
//    if( add( 2,2 ) != 4 )
//      BOOST_FAIL( "Ouch..." );             // #4 throws on error
//
//    if( add( 2,2 ) != 4 ) throw "Ouch..."; // #5 throws on error
//
//    BOOST_CHECK_MESSAGE( add( 2,2 ) == 4,  // #6 continues on error
//                         "add(..) result: " << add( 2,2 ) );
//
//    BOOST_CHECK_EQUAL( add( 2,2 ), 4 );	  // #7 continues on error
